import axios from 'axios'
import JSONbig from 'json-bigint'
import router from '@/router'
const request = axios.create({
  baseURL: 'http://ttapi.research.itcast.cn/',
  transformResponse: [function (data) { // data是请求返回的原始数据，未经json格式化
    try {
      return JSONbig.parse(data) // axios默认在内部使用JSON.parse来转换处理原始数据
    } catch (error) {
      return data
    }
  }]
  // 通过npm i json-bigint安装导入使用，来解决后端返回的数据因长度问题丢失精度，js数字有安全范围
})

request.interceptors.request.use(
  function (config) {
    const user = JSON.parse(window.localStorage.getItem('user'))
    if (user) {
      config.headers.Authorization = `Bearer ${user.token}`
    }
    return config
  },
  function (error) {
    return error
  }
)

request.interceptors.response.use(
  function (response) {
    return response
  },
  function (error) {
    if (error.response && error.response.status === 401) {
      window.localStorage.removeItem('user')
      router.push('/login')
    }
    return Promise.reject(error)
  }
)
export default request
